package com.mall.product.service;

import com.mall.common.core.text.Convert;
import com.mall.common.utils.DateUtils;
import com.mall.product.domain.biz.ProProductBiz;
import com.mall.product.domain.entity.ProProduct;
import com.mall.product.domain.entity.ProProductCustomRecordValue;
import com.mall.product.domain.req.ProProductRequest;
import com.mall.product.mapper.ProProductCustomRecordValueMapper;
import com.mall.product.mapper.ProProductMapper;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 商品Service业务层处理
 *
 * @author zhonglin
 * @date 2020-05-07
 */
@Service
public class ProProductService {

  @Autowired
  private ProProductMapper proProductMapper;

  @Autowired
  private ProProductCustomRecordValueMapper proProductCustomRecordValueMapper;

  /**
   * 查询商品
   *
   * @param productId 商品ID
   *
   * @return 商品
   */
  public ProProductBiz selectProProductById(Long productId) {

    return proProductMapper.selectProProductById(productId);
  }

  /**
   * 查询商品列表
   *
   * @param proProduct 商品
   *
   * @return 商品
   */
  public List<ProProductBiz> selectProProductList(ProProduct proProduct) {

    return proProductMapper.selectProProductList(proProduct);
  }

  /**
   * 新增商品
   *
   * @param proProduct 商品
   *
   * @return 结果
   */
  @Transactional(rollbackFor = Exception.class)
  public int insertProProduct(ProProductRequest proProduct) {

    proProduct.setCreateTime(DateUtils.getNowDate());

    int result = proProductMapper.insertProProduct(proProduct);

    List<ProProductCustomRecordValue> customRecordValueList = proProduct.getCustomRecordValues();
    for (ProProductCustomRecordValue proProductCustomRecordValue : customRecordValueList) {
      proProductCustomRecordValue.setProductId(proProduct.getProductId());
    }

    proProductCustomRecordValueMapper.batchInsertProProductCustomRecordValue(customRecordValueList);
    return result;
  }

  /**
   * 修改商品
   *
   * @param proProduct 商品
   *
   * @return 结果
   */
  public int updateProProduct(ProProduct proProduct) {

    proProduct.setUpdateTime(DateUtils.getNowDate());
    return proProductMapper.updateProProduct(proProduct);
  }

  /**
   * 删除商品对象
   *
   * @param ids 需要删除的数据ID
   *
   * @return 结果
   */
  public int deleteProProductByIds(String ids) {

    return proProductMapper.deleteProProductByIds(Convert.toStrArray(ids));
  }

  /**
   * 删除商品信息
   *
   * @param productId 商品ID
   *
   * @return 结果
   */
  public int deleteProProductById(Long productId) {

    return proProductMapper.deleteProProductById(productId);
  }


  public List<ProProduct> selectProductAll() {

    return proProductMapper.selectProductAll();
  }

}
